<mxfile host="wiki.studydev.com" modified="2026-09-06T14:43:29.553Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36" version="22.1.18" etag="DOqVB_y8VHeWlN4wmlvs" type="atlas" pages="6">
  <diagram id="sTrgSS4bnBuMstrZzxXo" name="페이지-1">
    <mxGraphModel dx="1868" dy="1263" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="Kr25bmKxmqLL0NZshGWW-1" value="1인 개발자를 위한 AI 홈랩 플랫폼" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=32;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#172B4D;fontStyle=1;" vertex="1" parent="1">
          <mxGeometry x="50" y="27" width="1450" height="44" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-2" value="기획 → 개발 → 문서화 → 이미지 빌드 → 홈랩 배포 → 서비스 운영을 하나의 흐름으로 연결" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#526277;fontStyle=0;" vertex="1" parent="1">
          <mxGeometry x="50" y="79" width="1500" height="30" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-3" value="STUDYDEV  /  PERSONAL AI HOMELAB     •     사용자 설명 + 첨부 구성도 기준 · 2026-09-06                                      01" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=13;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#718096;fontStyle=0;" vertex="1" parent="1">
          <mxGeometry x="50" y="951" width="1450" height="24" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-4" value="&lt;b&gt;01   기획 · 작업 관리 · 지식 축적&lt;/b&gt;" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=5;strokeColor=#7D58BB;strokeOpacity=35;fillColor=#F3EFFF;fillOpacity=28;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" vertex="1" parent="1">
          <mxGeometry x="40" y="135" width="1520" height="215" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-5" value="&lt;b&gt;개발자 · 자연어 요구사항&lt;/b&gt;&lt;br&gt;&lt;br&gt;장소에 관계없이 작업 요청&lt;br&gt;기능 기획과 결과 확인" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3EFFF;strokeColor=#7D58BB;align=left;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="65" y="195" width="275" height="110" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-6" value="&lt;b&gt;AI 개발 도구&lt;/b&gt;&lt;br&gt;&lt;br&gt;Claude Code · ChatGPT/Codex&lt;br&gt;GitHub Copilot" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3EFFF;strokeColor=#7D58BB;align=left;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="425" y="195" width="320" height="110" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-7" value="&lt;b&gt;MCP 서버 · TrueNAS&lt;/b&gt;&lt;br&gt;&lt;br&gt;도구 호출 연결&lt;br&gt;Jira·Confluence REST API" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3EFFF;strokeColor=#7D58BB;align=left;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="835" y="195" width="245" height="110" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-8" value="&lt;b&gt;Jira + Confluence · CentOS&lt;/b&gt;&lt;br&gt;&lt;br&gt;Jira: 요구사항·작업&lt;br&gt;Confluence: 개발 내용·결과" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3EFFF;strokeColor=#7D58BB;align=left;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="1170" y="195" width="365" height="110" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-9" value="&lt;b&gt;02   구현 · 소스 관리 · 컨테이너 이미지 전달&lt;/b&gt;" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=5;strokeColor=#3567BD;strokeOpacity=35;fillColor=#EEF4FF;fillOpacity=28;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" vertex="1" parent="1">
          <mxGeometry x="40" y="395" width="1520" height="215" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-10" value="&lt;b&gt;Mac mini M4&lt;/b&gt;&lt;br&gt;&lt;br&gt;원격 개발 · 로컬 작업 공간&lt;br&gt;구현 · 수정 · 테스트 · 리팩터링" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EEF4FF;strokeColor=#3567BD;align=left;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="65" y="455" width="275" height="110" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-11" value="&lt;b&gt;GitHub 저장소&lt;/b&gt;&lt;br&gt;&lt;br&gt;코드 Push&lt;br&gt;소스 변경 이력 관리" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EEF4FF;strokeColor=#3567BD;align=left;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="425" y="455" width="320" height="110" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-12" value="&lt;b&gt;GitHub Actions&lt;/b&gt;&lt;br&gt;&lt;br&gt;컨테이너 이미지 빌드&lt;br&gt;레지스트리에 게시" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EEF4FF;strokeColor=#3567BD;align=left;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="835" y="455" width="245" height="110" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-13" value="&lt;b&gt;GitHub Container Registry&lt;/b&gt;&lt;br&gt;&lt;br&gt;GHCR · 빌드 이미지 보관&lt;br&gt;NAS가 새 이미지 확인" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EEF4FF;strokeColor=#3567BD;align=left;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="1170" y="455" width="365" height="110" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-14" value="&lt;b&gt;03   외부 접속 · HTTPS 진입점 · 애플리케이션 실행&lt;/b&gt;" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=5;strokeColor=#27835A;strokeOpacity=35;fillColor=#EAF7F0;fillOpacity=28;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" vertex="1" parent="1">
          <mxGeometry x="40" y="655" width="1520" height="215" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-15" value="&lt;b&gt;외부 사용자&lt;/b&gt;&lt;br&gt;&lt;br&gt;Route 53 DNS 조회 후&lt;br&gt;공인 IP로 접속" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#FFF4E6;strokeColor=#C47B22;align=left;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="65" y="715" width="275" height="110" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-16" value="&lt;b&gt;자택 공유기&lt;/b&gt;&lt;br&gt;&lt;br&gt;공인 IP 수신&lt;br&gt;80·443 포트 포워딩" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#FFF4E6;strokeColor=#C47B22;align=left;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="425" y="715" width="320" height="110" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-17" value="&lt;b&gt;CentOS · Apache&lt;/b&gt;&lt;br&gt;&lt;br&gt;TLS 종료 · HTTPS 처리&lt;br&gt;리버스 프록시" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#FFF4E6;strokeColor=#C47B22;align=left;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="835" y="715" width="245" height="110" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-18" value="&lt;b&gt;TrueNAS · Docker 앱&lt;/b&gt;&lt;br&gt;&lt;br&gt;WordPress · 장기 · 아이고투북&lt;br&gt;MCP 서버" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EAF7F0;strokeColor=#27835A;align=left;verticalAlign=middle;" vertex="1" parent="1">
          <mxGeometry x="1170" y="715" width="365" height="110" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-19" value="범례  보라: AI·협업  /  파랑: 코드·빌드  /  초록: 배포·실행  /  주황: 서비스 요청     •     화살표는 주 흐름, 응답은 역방향" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#172B4D;fontStyle=0;" vertex="1" parent="1">
          <mxGeometry x="55" y="893" width="1480" height="35" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-20" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#7D58BB;fontColor=#7D58BB;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" edge="1" parent="1" source="Kr25bmKxmqLL0NZshGWW-5" target="Kr25bmKxmqLL0NZshGWW-6">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-21" value="요청" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#7D58BB;spacing=2;" vertex="1" parent="1">
          <mxGeometry x="352.5" y="238" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-22" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#7D58BB;fontColor=#7D58BB;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;startArrow=block;startFill=1;" edge="1" parent="1" source="Kr25bmKxmqLL0NZshGWW-6" target="Kr25bmKxmqLL0NZshGWW-7">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-23" value="MCP" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#7D58BB;spacing=2;" vertex="1" parent="1">
          <mxGeometry x="760" y="238" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-24" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#7D58BB;fontColor=#7D58BB;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;startArrow=block;startFill=1;" edge="1" parent="1" source="Kr25bmKxmqLL0NZshGWW-7" target="Kr25bmKxmqLL0NZshGWW-8">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-25" value="REST API" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#7D58BB;spacing=2;" vertex="1" parent="1">
          <mxGeometry x="1085" y="238" width="80" height="24" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-26" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#3567BD;fontColor=#3567BD;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;exitPerimeter=0;entryPerimeter=0;" edge="1" parent="1" source="Kr25bmKxmqLL0NZshGWW-6" target="Kr25bmKxmqLL0NZshGWW-10">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="585" y="372" />
              <mxPoint x="202.5" y="372" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-27" value="작업 공간 접근" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#3567BD;spacing=2;" vertex="1" parent="1">
          <mxGeometry x="302" y="360" width="116" height="24" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-28" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#3567BD;fontColor=#3567BD;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" edge="1" parent="1" source="Kr25bmKxmqLL0NZshGWW-10" target="Kr25bmKxmqLL0NZshGWW-11">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-29" value="Push" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#3567BD;spacing=2;" vertex="1" parent="1">
          <mxGeometry x="352.5" y="498" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-30" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#3567BD;fontColor=#3567BD;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" edge="1" parent="1" source="Kr25bmKxmqLL0NZshGWW-11" target="Kr25bmKxmqLL0NZshGWW-12">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-31" value="빌드" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#3567BD;spacing=2;" vertex="1" parent="1">
          <mxGeometry x="760" y="498" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-32" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#3567BD;fontColor=#3567BD;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" edge="1" parent="1" source="Kr25bmKxmqLL0NZshGWW-12" target="Kr25bmKxmqLL0NZshGWW-13">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-33" value="게시" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#3567BD;spacing=2;" vertex="1" parent="1">
          <mxGeometry x="1095" y="498" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-34" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#C47B22;fontColor=#C47B22;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" edge="1" parent="1" source="Kr25bmKxmqLL0NZshGWW-15" target="Kr25bmKxmqLL0NZshGWW-16">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-35" value="HTTP(S)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#C47B22;spacing=2;" vertex="1" parent="1">
          <mxGeometry x="346.5" y="758" width="72" height="24" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-36" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#C47B22;fontColor=#C47B22;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" edge="1" parent="1" source="Kr25bmKxmqLL0NZshGWW-16" target="Kr25bmKxmqLL0NZshGWW-17">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-37" value="80·443" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#C47B22;spacing=2;" vertex="1" parent="1">
          <mxGeometry x="758" y="758" width="64" height="24" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-38" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#C47B22;fontColor=#C47B22;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" edge="1" parent="1" source="Kr25bmKxmqLL0NZshGWW-17" target="Kr25bmKxmqLL0NZshGWW-18">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-39" value="내부망" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#C47B22;spacing=2;" vertex="1" parent="1">
          <mxGeometry x="1095" y="758" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-40" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#27835A;fontColor=#27835A;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;exitPerimeter=0;entryPerimeter=0;" edge="1" parent="1" source="Kr25bmKxmqLL0NZshGWW-13" target="Kr25bmKxmqLL0NZshGWW-18">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Kr25bmKxmqLL0NZshGWW-41" value="300초 확인 → 새 이미지 Pull·배포" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#27835A;spacing=2;" vertex="1" parent="1">
          <mxGeometry x="1222" y="630" width="260" height="24" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram name="02 AI 개발과 협업" id="R5oOmlxMzpfwtYCVDJOg">
    <mxGraphModel dx="1868" dy="1263" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1000" background="#FFFFFF" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="t0" value="AI 도구와 Jira·Confluence를 연결한 개발 루프" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=32;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#172B4D;fontStyle=1;" parent="1" vertex="1">
          <mxGeometry x="50" y="27" width="1450" height="44" as="geometry" />
        </mxCell>
        <mxCell id="t1" value="현재 사용하는 세 구독형 도구의 역할과, 자연어 요구사항에서 개발 결과 기록까지의 연결 구조" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#526277;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="50" y="79" width="1500" height="30" as="geometry" />
        </mxCell>
        <mxCell id="t2" value="STUDYDEV  /  PERSONAL AI HOMELAB     •     사용자 설명 + 첨부 구성도 기준 · 2026-09-06                                      02" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=13;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#718096;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="50" y="951" width="1450" height="24" as="geometry" />
        </mxCell>
        <mxCell id="p3" value="&lt;b&gt;사용자와 AI 도구&lt;/b&gt;" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=5;strokeColor=#7D58BB;strokeOpacity=35;fillColor=#F3EFFF;fillOpacity=28;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" parent="1" vertex="1">
          <mxGeometry x="40" y="140" width="475" height="680" as="geometry" />
        </mxCell>
        <mxCell id="u" value="&lt;b&gt;개발자&lt;/b&gt;&lt;br&gt;&lt;br&gt;자연어로 기능 요청 · 구현 결과 확인" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3EFFF;strokeColor=#7D58BB;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="65" y="195" width="425" height="90" as="geometry" />
        </mxCell>
        <mxCell id="claude" value="&lt;b&gt;Claude Code · Opus&lt;/b&gt;&lt;br&gt;&lt;br&gt;기획 · 기능 설계 · 플래닝 · 디자인&lt;br&gt;구독형 AI 도구" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3EFFF;strokeColor=#7D58BB;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="65" y="345" width="425" height="115" as="geometry" />
        </mxCell>
        <mxCell id="codex" value="&lt;b&gt;ChatGPT / Codex · GPT-5.6 Terra&lt;/b&gt;&lt;br&gt;&lt;br&gt;실제 구현 · 코드 수정&lt;br&gt;테스트 · 리팩터링" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3EFFF;strokeColor=#7D58BB;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="65" y="510" width="425" height="115" as="geometry" />
        </mxCell>
        <mxCell id="copilot" value="&lt;b&gt;GitHub Copilot&lt;/b&gt;&lt;br&gt;&lt;br&gt;일상적인 코드 작성 보조&lt;br&gt;구독형 AI 도구" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3EFFF;strokeColor=#7D58BB;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="65" y="675" width="425" height="100" as="geometry" />
        </mxCell>
        <mxCell id="p8" value="&lt;b&gt;자택의 실제 작업 환경&lt;/b&gt;" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=5;strokeColor=#3567BD;strokeOpacity=35;fillColor=#EEF4FF;fillOpacity=28;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" parent="1" vertex="1">
          <mxGeometry x="590" y="140" width="440" height="680" as="geometry" />
        </mxCell>
        <mxCell id="mcp" value="&lt;b&gt;MCP 서버 · TrueNAS NAS&lt;/b&gt;&lt;br&gt;&lt;br&gt;세 AI 도구가 MCP로 연결&lt;br&gt;협업 도구 호출의 중계 역할" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3EFFF;strokeColor=#7D58BB;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="625" y="350" width="370" height="125" as="geometry" />
        </mxCell>
        <mxCell id="mac" value="&lt;b&gt;Mac mini M4&lt;/b&gt;&lt;br&gt;&lt;br&gt;권한을 받은 로컬 파일 수정&lt;br&gt;GitHub 연결 작업 공간&lt;br&gt;외부에서도 AI 원격 작업 요청" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EEF4FF;strokeColor=#3567BD;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="625" y="615" width="370" height="145" as="geometry" />
        </mxCell>
        <mxCell id="p11" value="&lt;b&gt;HP MicroServer Gen8 · CentOS&lt;/b&gt;" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=5;strokeColor=#25868C;strokeOpacity=35;fillColor=#E8F7F8;fillOpacity=28;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" parent="1" vertex="1">
          <mxGeometry x="1105" y="140" width="455" height="515" as="geometry" />
        </mxCell>
        <mxCell id="jira" value="&lt;b&gt;Jira · 작업의 기준&lt;/b&gt;&lt;br&gt;&lt;br&gt;요구사항과 작업 생성·조회&lt;br&gt;Jira 작업을 기준으로 구현&lt;br&gt;jira.studydev.com" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#E8F7F8;strokeColor=#25868C;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="1140" y="245" width="385" height="130" as="geometry" />
        </mxCell>
        <mxCell id="conf" value="&lt;b&gt;Confluence · 지식의 축적&lt;/b&gt;&lt;br&gt;&lt;br&gt;구현 내용·결과 문서화&lt;br&gt;다음 개발에서 참고할 지식&lt;br&gt;wiki.studydev.com" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#E8F7F8;strokeColor=#25868C;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="1140" y="490" width="385" height="130" as="geometry" />
        </mxCell>
        <mxCell id="git" value="&lt;b&gt;GitHub 저장소&lt;/b&gt;&lt;br&gt;&lt;br&gt;변경 코드와 구현 결과 Push" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EEF4FF;strokeColor=#3567BD;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="1140" y="700" width="385" height="90" as="geometry" />
        </mxCell>
        <mxCell id="n15" value="&lt;b&gt;개발 순서&lt;/b&gt;&lt;br&gt;&lt;br&gt;① 자연어 요청 → ② Jira 작업 확인 → ③ Mac mini에서 구현" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3EFFF;strokeColor=#7D58BB;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="50" y="850" width="735" height="74" as="geometry" />
        </mxCell>
        <mxCell id="n16" value="&lt;b&gt;기록과 다음 반복&lt;/b&gt;&lt;br&gt;&lt;br&gt;④ Confluence에 결과 기록 → ⑤ GitHub Push → 배포 후 다음 요구사항" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EEF4FF;strokeColor=#3567BD;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="815" y="850" width="735" height="74" as="geometry" />
        </mxCell>
        <mxCell id="e0" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#7D58BB;fontColor=#7D58BB;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="u" target="claude" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el0" value="설계 요청" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#7D58BB;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="237.5" y="303" width="80" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e1" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#7D58BB;fontColor=#7D58BB;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;startArrow=block;startFill=1;" parent="1" source="claude" target="mcp" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el1" value="MCP" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#7D58BB;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="527.5" y="395.5" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e2" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#7D58BB;fontColor=#7D58BB;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;startArrow=block;startFill=1;" parent="1" source="codex" target="mcp" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="560" y="567" />
              <mxPoint x="560" y="425" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="el2" value="MCP" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#7D58BB;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="531" y="498" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e3" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#7D58BB;fontColor=#7D58BB;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;startArrow=block;startFill=1;" parent="1" source="copilot" target="mcp" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="540" y="725" />
              <mxPoint x="540" y="445" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="e4" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#7D58BB;fontColor=#7D58BB;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;startArrow=block;startFill=1;" parent="1" source="mcp" target="jira" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1060" y="412" />
              <mxPoint x="1060" y="310" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="el4" value="REST API" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#7D58BB;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="1020" y="323" width="80" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e5" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#7D58BB;fontColor=#7D58BB;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;startArrow=block;startFill=1;" parent="1" source="mcp" target="conf" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1080" y="435" />
              <mxPoint x="1080" y="555" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="el5" value="REST API" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#7D58BB;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="1040" y="503" width="80" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e6" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#3567BD;fontColor=#3567BD;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" parent="1" source="codex" target="mac" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="570" y="590" />
              <mxPoint x="570" y="685" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="el6" value="실제 구현" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#3567BD;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="530" y="638" width="80" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e7" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#3567BD;fontColor=#3567BD;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" parent="1" source="mac" target="git" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1070" y="687" />
              <mxPoint x="1070" y="745" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="el7" value="Push" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#3567BD;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="1040" y="703" width="60" height="24" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram name="03 장비와 내부망" id="S74hqgaJ-xpIYJrrEiBT">
    <mxGraphModel dx="1868" dy="1263" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1000" background="#FFFFFF" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="t0" value="자택 장비의 연결과 실행 책임" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=32;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#172B4D;fontStyle=1;" parent="1" vertex="1">
          <mxGeometry x="50" y="27" width="1450" height="44" as="geometry" />
        </mxCell>
        <mxCell id="t1" value="물리 연결·IP는 원본 구성도에서 읽은 정보입니다. 현재 설명으로 확인된 역할을 추가했으며 주소는 실측하지 않았습니다." style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#526277;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="50" y="79" width="1500" height="30" as="geometry" />
        </mxCell>
        <mxCell id="t2" value="STUDYDEV  /  PERSONAL AI HOMELAB     •     사용자 설명 + 첨부 구성도 기준 · 2026-09-06                                      03" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=13;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#718096;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="50" y="951" width="1450" height="24" as="geometry" />
        </mxCell>
        <mxCell id="isp" value="&lt;b&gt;SKB GIGA Lite · 500 Mbps&lt;/b&gt;&lt;br&gt;&lt;br&gt;원본 표기 · 아파트 단자함" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3F5F8;strokeColor=#8795A8;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="50" y="160" width="310" height="95" as="geometry" />
        </mxCell>
        <mxCell id="router" value="&lt;b&gt;ASUS GT-AC2900&lt;/b&gt;&lt;br&gt;&lt;br&gt;원본: AiMesh Master · 공인 IP 2" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#FFF4E6;strokeColor=#C47B22;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="465" y="160" width="340" height="95" as="geometry" />
        </mxCell>
        <mxCell id="tv" value="&lt;b&gt;SKB TV 셋톱박스&lt;/b&gt;&lt;br&gt;&lt;br&gt;원본: 별도 공인 IP 1 경로" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3F5F8;strokeColor=#8795A8;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="1040" y="160" width="480" height="95" as="geometry" />
        </mxCell>
        <mxCell id="hp" value="&lt;b&gt;HP MicroServer Gen8&lt;/b&gt;&lt;br&gt;&lt;br&gt;현재 역할: CentOS · Apache · Jira · Confluence&lt;br&gt;외부 요청 진입 · HTTPS 처리 · 리버스 프록시&lt;br&gt;&lt;br&gt;원본 주소 대응(배치 기준)&lt;br&gt;CentOS: 192.168.1.202&lt;br&gt;ESXi 관리: 192.168.1.178" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#FFF4E6;strokeColor=#C47B22;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="50" y="385" width="440" height="230" as="geometry" />
        </mxCell>
        <mxCell id="nas" value="&lt;b&gt;Minisforum N5 Air · TrueNAS&lt;/b&gt;&lt;br&gt;&lt;br&gt;현재 역할: Docker 기반 컨테이너 실행&lt;br&gt;WordPress · MCP · 장기 · 아이고투북&lt;br&gt;원본 IP: 192.168.1.92&lt;br&gt;&lt;br&gt;RAM 64 GB · OS 저장 장치 64 GB&lt;br&gt;NVMe 2 TB + 1 TB · SSD 4 TB · HDD 12 TB" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EAF7F0;strokeColor=#27835A;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="580" y="385" width="460" height="230" as="geometry" />
        </mxCell>
        <mxCell id="sw" value="&lt;b&gt;Netis ST3108GS&lt;/b&gt;&lt;br&gt;&lt;br&gt;8포트 스위치 · 아파트 단자함&lt;br&gt;원본의 내부 연결" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3F5F8;strokeColor=#8795A8;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="1140" y="385" width="380" height="115" as="geometry" />
        </mxCell>
        <mxCell id="mesh" value="&lt;b&gt;ASUS RT-AC68W&lt;/b&gt;&lt;br&gt;&lt;br&gt;원본: AiMesh Node" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3F5F8;strokeColor=#8795A8;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="1140" y="570" width="380" height="100" as="geometry" />
        </mxCell>
        <mxCell id="mac" value="&lt;b&gt;Mac mini M4&lt;/b&gt;&lt;br&gt;&lt;br&gt;주 개발 장비 · 원격 작업&lt;br&gt;IP 미기재" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EEF4FF;strokeColor=#3567BD;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="890" y="780" width="300" height="115" as="geometry" />
        </mxCell>
        <mxCell id="nuc" value="&lt;b&gt;Intel NUC&lt;/b&gt;&lt;br&gt;&lt;br&gt;원본 장비&lt;br&gt;현재 개발 역할 미확인" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3F5F8;strokeColor=#8795A8;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="1260" y="780" width="260" height="115" as="geometry" />
        </mxCell>
        <mxCell id="n12" value="&lt;b&gt;원본 정보와 현재 운영 설명의 구분&lt;/b&gt;&lt;br&gt;&lt;br&gt;• VMware ESXi 5.5와 기존 NAS 192.168.1.201은 원본에 남아 있습니다.&lt;br&gt;• 현재 요약에는 가상화 계층·기존 NAS 역할의 유지 여부가 명시되지 않았습니다.&lt;br&gt;• Minisforum의 저장 장치별 풀·RAID·데이터 배치는 미제공입니다.&lt;br&gt;• 선은 원본 연결 관계를 옮긴 것이며 케이블·포트 설정을 검증한 것은 아닙니다." style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3F5F8;strokeColor=#8795A8;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="50" y="675" width="760" height="220" as="geometry" />
        </mxCell>
        <mxCell id="e0" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#8795A8;fontColor=#8795A8;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" parent="1" source="isp" target="router" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el0" value="WAN" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#8795A8;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="382.5" y="195.5" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e1" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#8795A8;fontColor=#8795A8;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=0.5;exitY=0;entryX=0.5;entryY=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="isp" target="tv" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="205" y="130" />
              <mxPoint x="1280" y="130" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="el1" value="원본 TV 경로" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#8795A8;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="848" y="118" width="104" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e2" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#8795A8;fontColor=#8795A8;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="router" target="hp" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="635" y="320" />
              <mxPoint x="270" y="320" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="el2" value="LAN" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#8795A8;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="370" y="308" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e3" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#8795A8;fontColor=#8795A8;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="router" target="nas" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="635" y="340" />
              <mxPoint x="810" y="340" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="el3" value="LAN" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#8795A8;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="725" y="328" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e4" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#8795A8;fontColor=#8795A8;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="router" target="sw" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="635" y="285" />
              <mxPoint x="1330" y="285" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="el4" value="LAN" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#8795A8;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="1030" y="273" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e5" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#8795A8;fontColor=#8795A8;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="sw" target="mesh" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el5" value="원본 연결" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#8795A8;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="1290" y="523" width="80" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e6" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#8795A8;fontColor=#8795A8;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="mesh" target="mac" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1330" y="735" />
              <mxPoint x="1040" y="735" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="el6" value="원본 연결" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#8795A8;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="1080" y="723" width="80" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e7" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#8795A8;fontColor=#8795A8;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="mesh" target="nuc" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1330" y="715" />
              <mxPoint x="1390" y="715" />
            </Array>
          </mxGeometry>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram name="04 외부 접속과 프록시" id="xU4Kwj2A8A9NJWoiAVIe">
    <mxGraphModel dx="1868" dy="1263" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1000" background="#FFFFFF" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="t0" value="DNS 조회와 웹 요청 경로를 분리한 서비스 공개 구조" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=32;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#172B4D;fontStyle=1;" parent="1" vertex="1">
          <mxGeometry x="50" y="27" width="1450" height="44" as="geometry" />
        </mxCell>
        <mxCell id="t1" value="Route 53은 도메인을 공인 IP로 해석하는 DNS 계층입니다. 실제 HTTP(S) 요청은 공유기와 Apache를 거칩니다." style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#526277;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="50" y="79" width="1500" height="30" as="geometry" />
        </mxCell>
        <mxCell id="t2" value="STUDYDEV  /  PERSONAL AI HOMELAB     •     사용자 설명 + 첨부 구성도 기준 · 2026-09-06                                      04" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=13;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#718096;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="50" y="951" width="1450" height="24" as="geometry" />
        </mxCell>
        <mxCell id="p3" value="&lt;b&gt;A   DNS 조회 · 논리 흐름&lt;/b&gt;" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=5;strokeColor=#8795A8;strokeOpacity=35;fillColor=#F3F5F8;fillOpacity=28;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" parent="1" vertex="1">
          <mxGeometry x="40" y="140" width="1520" height="195" as="geometry" />
        </mxCell>
        <mxCell id="userdns" value="&lt;b&gt;외부 사용자 · DNS 조회&lt;/b&gt;&lt;br&gt;&lt;br&gt;DNS 리졸버 경유(간략화)" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3F5F8;strokeColor=#8795A8;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="65" y="205" width="350" height="85" as="geometry" />
        </mxCell>
        <mxCell id="dns" value="&lt;b&gt;AWS Route 53&lt;/b&gt;&lt;br&gt;&lt;br&gt;도메인 → 자택 공유기의 공인 IP" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3F5F8;strokeColor=#8795A8;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="610" y="205" width="400" height="85" as="geometry" />
        </mxCell>
        <mxCell id="resolved" value="&lt;b&gt;접속할 공인 IP 확보&lt;/b&gt;&lt;br&gt;&lt;br&gt;웹 요청 목적지 결정" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3F5F8;strokeColor=#8795A8;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="1205" y="205" width="325" height="85" as="geometry" />
        </mxCell>
        <mxCell id="p7" value="&lt;b&gt;B   실제 서비스 요청 · 자택 내부망까지&lt;/b&gt;" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=5;strokeColor=#C47B22;strokeOpacity=35;fillColor=#FFF4E6;fillOpacity=28;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" parent="1" vertex="1">
          <mxGeometry x="40" y="385" width="1520" height="425" as="geometry" />
        </mxCell>
        <mxCell id="user" value="&lt;b&gt;외부 사용자&lt;/b&gt;&lt;br&gt;&lt;br&gt;공인 IP로 접속&lt;br&gt;HTTP 80 / HTTPS 443" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#FFF4E6;strokeColor=#C47B22;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="65" y="465" width="235" height="120" as="geometry" />
        </mxCell>
        <mxCell id="router" value="&lt;b&gt;자택 공유기&lt;/b&gt;&lt;br&gt;&lt;br&gt;공인 IP 수신&lt;br&gt;80·443 포트 포워딩" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#FFF4E6;strokeColor=#C47B22;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="395" y="465" width="255" height="120" as="geometry" />
        </mxCell>
        <mxCell id="apache" value="&lt;b&gt;CentOS · Apache&lt;/b&gt;&lt;br&gt;&lt;br&gt;SSL/TLS 인증서로 HTTPS 처리&lt;br&gt;리버스 프록시 대상 선택" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#FFF4E6;strokeColor=#C47B22;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="755" y="465" width="310" height="120" as="geometry" />
        </mxCell>
        <mxCell id="nas" value="&lt;b&gt;TrueNAS 컨테이너 서비스&lt;/b&gt;&lt;br&gt;&lt;br&gt;WordPress 기반 블로그&lt;br&gt;장기 앱&lt;br&gt;아이고투북 예약 서비스&lt;br&gt;MCP 서버" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EAF7F0;strokeColor=#27835A;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="1180" y="440" width="350" height="185" as="geometry" />
        </mxCell>
        <mxCell id="jc" value="&lt;b&gt;동일 CentOS의 협업 도구&lt;/b&gt;&lt;br&gt;&lt;br&gt;Jira · Confluence" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#E8F7F8;strokeColor=#25868C;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="755" y="680" width="310" height="85" as="geometry" />
        </mxCell>
        <mxCell id="t13" value="NAS 앱은 외부 직접 공개 없이&lt;br&gt;Apache 프록시를 통해 제공&lt;br&gt;&lt;br&gt;내부 IP: 192.168.1.92 (원본)" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#172B4D;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="1180" y="650" width="355" height="110" as="geometry" />
        </mxCell>
        <mxCell id="n14" value="&lt;b&gt;응답 경로&lt;/b&gt;&lt;br&gt;&lt;br&gt;컨테이너 → Apache → 공유기 → 외부 사용자 순으로 반환" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#FFF4E6;strokeColor=#C47B22;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="50" y="850" width="735" height="75" as="geometry" />
        </mxCell>
        <mxCell id="n15" value="&lt;b&gt;아직 제공되지 않은 설정&lt;/b&gt;&lt;br&gt;&lt;br&gt;앱별 포트·가상 호스트·내부 HTTP/TLS·80→443 전환 정책" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3F5F8;strokeColor=#8795A8;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="815" y="850" width="735" height="75" as="geometry" />
        </mxCell>
        <mxCell id="e0" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#8795A8;fontColor=#8795A8;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;dashed=1;dashPattern=6 4;startArrow=block;startFill=1;" parent="1" source="userdns" target="dns" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el0" value="도메인 조회" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#8795A8;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="465.5" y="235.5" width="94" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e1" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#8795A8;fontColor=#8795A8;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;dashed=1;dashPattern=6 4;" parent="1" source="dns" target="resolved" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el1" value="DNS 응답" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#8795A8;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="1069.5" y="235.5" width="76" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e2" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#C47B22;fontColor=#C47B22;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" parent="1" source="user" target="router" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el2" value="요청" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#C47B22;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="317.5" y="513" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e3" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#C47B22;fontColor=#C47B22;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" parent="1" source="router" target="apache" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el3" value="TCP 80·443" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#C47B22;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="654.5" y="513" width="96" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e4" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#C47B22;fontColor=#C47B22;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" parent="1" source="apache" target="nas" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el4" value="내부 대상" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#C47B22;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="1082.5" y="516.75" width="80" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e5" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#25868C;fontColor=#25868C;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;exitPerimeter=0;entryPerimeter=0;" parent="1" source="apache" target="jc" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el5" value="협업 서비스" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#25868C;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="863" y="620.5" width="94" height="24" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram name="05 빌드와 자동 배포" id="oO3cny4zT21WJLMabvPR">
    <mxGraphModel dx="1868" dy="1263" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1000" background="#FFFFFF" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="t0" value="GitHub Push에서 NAS의 Pull 배포까지" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=32;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#172B4D;fontStyle=1;" parent="1" vertex="1">
          <mxGeometry x="50" y="27" width="1450" height="44" as="geometry" />
        </mxCell>
        <mxCell id="t1" value="현재 설명의 배포 방식: GitHub Actions가 이미지를 게시하고, TrueNAS가 300초마다 새 이미지를 확인합니다." style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#526277;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="50" y="79" width="1500" height="30" as="geometry" />
        </mxCell>
        <mxCell id="t2" value="STUDYDEV  /  PERSONAL AI HOMELAB     •     사용자 설명 + 첨부 구성도 기준 · 2026-09-06                                      05" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=13;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#718096;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="50" y="951" width="1450" height="24" as="geometry" />
        </mxCell>
        <mxCell id="p3" value="&lt;b&gt;01   코드 변경 → 이미지 게시&lt;/b&gt;" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=5;strokeColor=#3567BD;strokeOpacity=35;fillColor=#EEF4FF;fillOpacity=28;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" parent="1" vertex="1">
          <mxGeometry x="40" y="140" width="1520" height="225" as="geometry" />
        </mxCell>
        <mxCell id="mac" value="&lt;b&gt;Mac mini M4&lt;/b&gt;&lt;br&gt;&lt;br&gt;코드 구현 · 수정 · 테스트&lt;br&gt;GitHub 저장소로 Push" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EEF4FF;strokeColor=#3567BD;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="65" y="205" width="280" height="110" as="geometry" />
        </mxCell>
        <mxCell id="repo" value="&lt;b&gt;GitHub 저장소&lt;/b&gt;&lt;br&gt;&lt;br&gt;소스 변경 수신&lt;br&gt;GitHub Actions 실행" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EEF4FF;strokeColor=#3567BD;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="440" y="205" width="280" height="110" as="geometry" />
        </mxCell>
        <mxCell id="actions" value="&lt;b&gt;GitHub Actions&lt;/b&gt;&lt;br&gt;&lt;br&gt;컨테이너 이미지 빌드&lt;br&gt;GHCR로 이미지 게시" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EEF4FF;strokeColor=#3567BD;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="815" y="205" width="300" height="110" as="geometry" />
        </mxCell>
        <mxCell id="ghcr" value="&lt;b&gt;GHCR&lt;/b&gt;&lt;br&gt;&lt;br&gt;GitHub Container Registry&lt;br&gt;배포할 이미지 보관" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EEF4FF;strokeColor=#3567BD;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="1210" y="205" width="320" height="110" as="geometry" />
        </mxCell>
        <mxCell id="p8" value="&lt;b&gt;02   TrueNAS NAS 내부 · Pull 기반 자동 배포&lt;/b&gt;" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=5;strokeColor=#27835A;strokeOpacity=35;fillColor=#EAF7F0;fillOpacity=28;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" parent="1" vertex="1">
          <mxGeometry x="40" y="415" width="1520" height="320" as="geometry" />
        </mxCell>
        <mxCell id="poll" value="&lt;b&gt;300초마다 이미지 확인&lt;/b&gt;&lt;br&gt;&lt;br&gt;자동 갱신 구성요소&lt;br&gt;사용 도구명·설정은 미제공" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EAF7F0;strokeColor=#27835A;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="65" y="490" width="280" height="135" as="geometry" />
        </mxCell>
        <mxCell id="check" value="&lt;b&gt;새 이미지 여부 판단&lt;/b&gt;&lt;br&gt;&lt;br&gt;새 이미지 없음: 다음 주기 대기&lt;br&gt;새 이미지 있음: Pull 진행" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EAF7F0;strokeColor=#27835A;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="440" y="490" width="280" height="135" as="geometry" />
        </mxCell>
        <mxCell id="pull" value="&lt;b&gt;이미지 Pull · 배포&lt;/b&gt;&lt;br&gt;&lt;br&gt;GHCR에서 이미지 다운로드&lt;br&gt;해당 컨테이너 서비스 갱신" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EAF7F0;strokeColor=#27835A;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="815" y="490" width="300" height="135" as="geometry" />
        </mxCell>
        <mxCell id="run" value="&lt;b&gt;서비스 실행&lt;/b&gt;&lt;br&gt;&lt;br&gt;TrueNAS의 Docker 기반 앱&lt;br&gt;Apache 프록시로 사용자 제공" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EAF7F0;strokeColor=#27835A;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="1210" y="490" width="320" height="135" as="geometry" />
        </mxCell>
        <mxCell id="n13" value="&lt;b&gt;배포 책임의 분리&lt;/b&gt;&lt;br&gt;&lt;br&gt;GitHub Actions: 이미지 빌드와 게시&lt;br&gt;TrueNAS: 새 이미지 확인·다운로드·서비스 배포&lt;br&gt;5분은 확인 간격이며 다운로드·재시작을 포함한 완료 시간은 아닙니다." style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EEF4FF;strokeColor=#3567BD;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="50" y="785" width="735" height="140" as="geometry" />
        </mxCell>
        <mxCell id="n14" value="&lt;b&gt;구현 상세는 아직 확인되지 않음&lt;/b&gt;&lt;br&gt;&lt;br&gt;자동 갱신 도구명 · 이미지 태그/다이제스트 비교 방식&lt;br&gt;빌드 내 테스트 여부 · 헬스체크 · 롤백 · 알림&lt;br&gt;영속 데이터와 데이터베이스 마이그레이션 방식" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3F5F8;strokeColor=#8795A8;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="815" y="785" width="735" height="140" as="geometry" />
        </mxCell>
        <mxCell id="e0" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#3567BD;fontColor=#3567BD;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" parent="1" source="mac" target="repo" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el0" value="Push" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#3567BD;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="362.5" y="248" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e1" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#3567BD;fontColor=#3567BD;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" parent="1" source="repo" target="actions" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el1" value="실행" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#3567BD;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="737.5" y="248" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e2" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#3567BD;fontColor=#3567BD;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" parent="1" source="actions" target="ghcr" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el2" value="게시" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#3567BD;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="1132.5" y="248" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e3" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#27835A;fontColor=#27835A;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" parent="1" source="poll" target="check" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el3" value="확인" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#27835A;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="362.5" y="545.5" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e4" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#27835A;fontColor=#27835A;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" parent="1" source="check" target="pull" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el4" value="있음" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#27835A;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="737.5" y="545.5" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e5" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#27835A;fontColor=#27835A;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;" parent="1" source="pull" target="run" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el5" value="갱신" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#27835A;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="1132.5" y="545.5" width="60" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e6" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#27835A;fontColor=#27835A;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=0;exitPerimeter=0;entryPerimeter=0;dashed=1;dashPattern=6 4;startArrow=block;startFill=1;" parent="1" source="ghcr" target="poll" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="1370" y="391" />
              <mxPoint x="205" y="391" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="el6" value="NAS가 조회 · GHCR이 이미지 정보 응답" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#27835A;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="569" y="379" width="282" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e7" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#27835A;fontColor=#27835A;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=0.5;exitY=1;entryX=0.5;entryY=1;exitPerimeter=0;entryPerimeter=0;dashed=1;dashPattern=6 4;" parent="1" source="check" target="poll" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="580" y="688" />
              <mxPoint x="205" y="688" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="el7" value="없음 → 다음 300초 주기" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#27835A;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="300" y="676" width="184" height="24" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram name="06 확장 방향과 확인 항목" id="RLzemkCEBYXIEeiWF_yR">
    <mxGraphModel dx="1868" dy="1263" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1000" background="#FFFFFF" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="t0" value="홈랩에서 클라우드로 이어지는 확장 방향" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=32;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#172B4D;fontStyle=1;" parent="1" vertex="1">
          <mxGeometry x="50" y="27" width="1450" height="44" as="geometry" />
        </mxCell>
        <mxCell id="t1" value="현재 구조와 향후 방향을 구분합니다. 아래 클라우드 단계는 사용자 목표를 구체화한 개념안이며 아직 배포된 구성은 아닙니다." style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=16;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#526277;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="50" y="79" width="1500" height="30" as="geometry" />
        </mxCell>
        <mxCell id="t2" value="STUDYDEV  /  PERSONAL AI HOMELAB     •     사용자 설명 + 첨부 구성도 기준 · 2026-09-06                                      06" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=13;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#718096;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="50" y="951" width="1450" height="24" as="geometry" />
        </mxCell>
        <mxCell id="now" value="&lt;b&gt;현재 · 홈랩 중심 운영&lt;/b&gt;&lt;br&gt;&lt;br&gt;Mac mini에서 AI 기반 개발&lt;br&gt;GitHub Actions → GHCR 이미지&lt;br&gt;TrueNAS에서 컨테이너 실행&lt;br&gt;CentOS·Apache가 외부 진입점&lt;br&gt;&lt;br&gt;현재 DB 종류·배치·백업 구성: 미제공" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#EAF7F0;strokeColor=#27835A;align=left;verticalAlign=middle;" parent="1" vertex="1">
          <mxGeometry x="50" y="170" width="420" height="230" as="geometry" />
        </mxCell>
        <mxCell id="hybrid" value="&lt;b&gt;향후 예시 1 · 데이터 계층 확장&lt;/b&gt;&lt;br&gt;&lt;br&gt;컨테이너 기반 앱 배포 단위 유지&lt;br&gt;데이터베이스의 클라우드 이전 검토&lt;br&gt;홈랩 앱과 클라우드 DB 연결 구성&lt;br&gt;&lt;br&gt;결정할 항목: 데이터 이전·접속·지연&lt;br&gt;구체 공급자·제품·순서는 미정" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3EFFF;strokeColor=#7D58BB;align=left;verticalAlign=middle;dashed=1;dashPattern=6 4;" parent="1" vertex="1">
          <mxGeometry x="590" y="170" width="420" height="230" as="geometry" />
        </mxCell>
        <mxCell id="cloud" value="&lt;b&gt;향후 예시 2 · 컴퓨팅 확장&lt;/b&gt;&lt;br&gt;&lt;br&gt;서비스 증가에 맞춰 실행 환경 이전&lt;br&gt;컨테이너 이미지 기반 배포 지속&lt;br&gt;클라우드의 진입점·저장소 연결&lt;br&gt;&lt;br&gt;결정할 항목: 실행 서비스·규모·비용&lt;br&gt;구체 공급자·제품·순서는 미정" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;rounded=1;arcSize=8;strokeWidth=1.5;fillColor=#F3EFFF;strokeColor=#7D58BB;align=left;verticalAlign=middle;dashed=1;dashPattern=6 4;" parent="1" vertex="1">
          <mxGeometry x="1130" y="170" width="420" height="230" as="geometry" />
        </mxCell>
        <mxCell id="t6" value="이미지라는 배포 단위는 유지하고, 실행 위치와 데이터 계층을 단계적으로 확장" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=23;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#172B4D;fontStyle=1;" parent="1" vertex="1">
          <mxGeometry x="50" y="442" width="1490" height="40" as="geometry" />
        </mxCell>
        <mxCell id="p7" value="&lt;b&gt;현재 정보로 구성도를 확정하려면 확인할 항목&lt;/b&gt;" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=5;strokeColor=#8795A8;strokeOpacity=35;fillColor=#F3F5F8;fillOpacity=28;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" parent="1" vertex="1">
          <mxGeometry x="40" y="520" width="750" height="405" as="geometry" />
        </mxCell>
        <mxCell id="t8" value="네트워크&lt;br&gt;앱별 도메인·포트 · 현재 IP · 공인 IP 갱신 방식&lt;br&gt;&lt;br&gt;운영과 데이터&lt;br&gt;DB 위치·종류 · 볼륨/저장 풀 · 백업·복원 · 인증서 갱신&lt;br&gt;&lt;br&gt;배포와 접근&lt;br&gt;자동 갱신 도구 · 이미지 버전 · 헬스체크·롤백&lt;br&gt;MCP 접근 인증 · 원격 개발 연결 방식" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#172B4D;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="65" y="578" width="700" height="300" as="geometry" />
        </mxCell>
        <mxCell id="p9" value="&lt;b&gt;원본에만 있는 항목 · 현재 여부 미확인&lt;/b&gt;" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=17;fontColor=#172B4D;spacing=16;rounded=1;arcSize=5;strokeColor=#8795A8;strokeOpacity=35;fillColor=#F3F5F8;fillOpacity=28;align=left;verticalAlign=top;spacingTop=16;spacingLeft=20;" parent="1" vertex="1">
          <mxGeometry x="830" y="520" width="730" height="405" as="geometry" />
        </mxCell>
        <mxCell id="t10" value="가상화·기존 NAS&lt;br&gt;VMware ESXi 5.5 · 192.168.1.178&lt;br&gt;기존 NAS 계층 · 192.168.1.201&lt;br&gt;&lt;br&gt;기존 서비스&lt;br&gt;Plex · DS Download · DS Photo · DS Audio · DS Video&lt;br&gt;nas.studydev.com · www.studydev.com의 현재 대상&lt;br&gt;&lt;br&gt;주변 장비&lt;br&gt;Intel NUC · TV 셋톱박스 · 원본의 이름 없는 장비 이미지" style="html=1;whiteSpace=wrap;fontFamily=Arial;fontSize=18;fontColor=#172B4D;spacing=16;text;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacing=0;fontColor=#172B4D;fontStyle=0;" parent="1" vertex="1">
          <mxGeometry x="855" y="578" width="680" height="300" as="geometry" />
        </mxCell>
        <mxCell id="e0" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#7D58BB;fontColor=#7D58BB;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;dashed=1;dashPattern=6 4;" parent="1" source="now" target="hybrid" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el0" value="확장 방향" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#7D58BB;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="490" y="273" width="80" height="24" as="geometry" />
        </mxCell>
        <mxCell id="e1" value="" style="edgeStyle=none;noEdgeStyle=1;rounded=0;html=1;strokeWidth=2;strokeColor=#7D58BB;fontColor=#7D58BB;fontSize=15;fontFamily=Arial;endArrow=block;endFill=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;exitPerimeter=0;entryPerimeter=0;dashed=1;dashPattern=6 4;" parent="1" source="hybrid" target="cloud" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="el1" value="확장 방향" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;fillColor=#FFFFFF;strokeColor=none;fontFamily=Arial;fontSize=14;fontColor=#7D58BB;spacing=2;" parent="1" vertex="1">
          <mxGeometry x="1030" y="273" width="80" height="24" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
